package com.dbms.parser.ast;

/**
 * AggregateNode (聚合节点) 代表一个聚合函数调用的抽象语法树 (AST) 节点。
 * 例如，在 SQL 查询 `SELECT COUNT(*) FROM users` 中，`COUNT(*)`
 * 这部分就会被解析成一个 AggregateNode。
 */
public class AggregateNode extends AstNode {
    /**
     * 聚合函数的名称，例如 "COUNT", "SUM", "AVG" 等。
     */
    private final String functionName;
    /**
     * 聚合函数的参数，例如 "*", "age", "DISTINCT salary" 等。
     * 为简化起见，这里用一个字符串表示。
     */
    private final String argument;

    public AggregateNode(String functionName, String argument) {
        this.functionName = functionName;
        this.argument = argument;
    }

    /**
     * 获取聚合函数的名称。
     * @return 函数名字符串。
     */
    public String getFunctionName() {
        return functionName;
    }

    /**
     * 获取聚合函数的参数。
     * @return 参数字符串。
     */
    public String getArgument() {
        return argument;
    }

    /**
     * 返回该聚合函数调用的字符串表示形式。
     * @return 例如 "COUNT(*)"。
     */
    @Override
    public String toString() {
        return functionName + "(" + argument + ")";
    }
}